package com.likou;

import java.util.HashSet;
import java.util.Set;

/**
 * Author: 陈桂明
 * Date: 2025/9/2 16:29
 * Description: q160
 */
public class q160 {

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     * int val;
     * ListNode next;
     * ListNode(int x) {
     * val = x;
     * next = null;
     * }
     * }
     */

    public class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
            next = null;
        }
    }

    // 相加距离来解决
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode pA = headA;
        ListNode pB = headB;

        while (pA != pB) {
            pA = pA == null ? headB : pA.next;
            pB = pB == null ? headA : pB.next;
        }
        return pA;
    }

//    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
//        Set<ListNode> set = new HashSet<>();
//
//        ListNode p = headA;
//        while (p != null) {
//            set.add(p);
//            p = p.next;
//        }
//
//        p = headB;
//        while (p != null) {
//            if (set.contains(p)) {
//                return p;
//            }
//            p = p.next;
//        }
//
//        return null;
//    }
}
